// Engine3D_EGE_GL.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "./flatform/Drawable.h"


extern Device device;
int main()
{
	HWND hWnd;
	EP_Init(800, 600, hWnd);

	device.hWnd = hWnd;

	Initialize();

	EP_RenderStart();
	while (true) {
		onPaint(hWnd);

		if (!isInputBlocked()) {
			while (EP_MouseHit())
			{
				EP_MouseMsg msg = EP_GetMouseMsg();
				if (EP_IsWheel(msg)) {
					onScroll(msg.wheel);
				}
				if (EP_IsRight(msg)) {
					if (EP_IsDown(msg))
					{
						onMenu(msg.x, msg.y, 1);
					}
					else if (EP_IsUp(msg))
					{
						onMenu(msg.x, msg.y, 0);
					}
				}
				else if (EP_IsLeft(msg)) {
					if (EP_IsDown(msg))
					{
						onDrag(msg.x, msg.y, 1);
					}
					else if (EP_IsUp(msg))
					{
						onDrag(msg.x, msg.y, 0);
					}
				}
				if (EP_IsMove(msg))
				{
					onMenu(msg.x, msg.y, 2);
					onDrag(msg.x, msg.y, 2);
				}
			}
			if (EP_KBMsg()) {
				EP_MSG msg = EP_GetKBMsg();
				if (EP_KBIsUp(msg)) {
					onKeyUp(EP_GetKey(msg));
				}
				if (EP_KBIsDown(msg)) {
					onKeyDown(EP_GetKey(msg));
				}
				if (EP_Equal(msg, VK_ESCAPE)) {
					break;
				}
			}
		}
		else {
			EP_Delay(1000);
		}
		EP_FlushKey();
		EP_FlushMouse();

		//delay_ms(100);
		//EP_RenderFlush();//Using hdc drawing, so do not needed
	}
	closegraph();
	onClose();

	getch();
	return 0;
}
